/**
 * 下拉菜单项数据结构类型定义
 */
export interface TuiDropdownItemData {
  /** 唯一标识名称或索引 */
  name?: string;
  /** 菜单项标题 */
  label?: string;
  /** 命令值，点击时触发 */
  command?: any;
  /** 图标配置 */
  icon?: string;
  /** 子菜单 */
  children?: TuiDropdownItemData[];
  /** 是否禁用 */
  disabled?: boolean;
  /** 菜单项类型 */
  type?: 'item' | 'group';
  /** 分组标题 */
  title?: string;
}

/**
 * 下拉菜单组件的属性类型定义
 */
export interface TuiDropdownProps {
  /**
   * 触发方式
   * @default 'hover'
   */
  trigger?: 'hover' | 'click' | 'contextmenu';

  /**
   * 下拉菜单的位置
   * @default 'bottom'
   */
  placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';

  /**
   * 菜单出现的延迟时间
   * @default 250
   */
  showTimeout?: number;

  /**
   * 菜单消失的延迟时间
   * @default 150
   */
  hideTimeout?: number;

  /**
   * 是否禁用
   * @default false
   */
  disabled?: boolean;

  /**
   * 是否可点击外部关闭
   * @default true
   */
  closeOnClickOutside?: boolean;

  /**
   * 是否可点击内部关闭
   * @default false
   */
  closeOnClickInside?: boolean;

  /**
   * 下拉菜单的偏移量
   * @default 0
   */
  popperOffset?: number;

  /**
   * 下拉菜单的自定义类名
   */
  popperClass?: string;

  /**
   * 是否在组件挂载时显示下拉菜单
   * @default false
   */
  showPopper?: boolean;

  /**
   * 用于手动控制下拉菜单的显示状态
   */
  modelValue?: boolean;

  /**
   * 菜单项数据
   */
  items?: TuiDropdownItemData[];

  /**
   * 当前激活的菜单项索引
   */
  activeIndex?: string;

  /**
   * 菜单尺寸
   */
  size?: 'large' | 'default' | 'small';
}